home *** CD-ROM | disk | FTP | other *** search
/ Lexis Nexis Millenium Plus Collection 1997 to 1997 / Lexis-Nexis Millenium Plus Collection - 1996-97 (Lexis-Nexis)(LA1173-0 07-96)(1996).bin / pc / office / lnoffice / folio / disk1 / setupapi.in_ / setupapi.in
Text File  |  1993-05-03  |  27KB  |  826 lines

  1. GLOBAL hSetup AS INTEGER
  2. GLOBAL fFrameInit AS INTEGER
  3. GLOBAL fInstallInit AS INTEGER
  4.  
  5. CONST SM_CXSCREEN = 0
  6. CONST SM_CYSCREEN = 1
  7.  
  8. CONST WF_80x87    = 1024
  9. CONST WF_CPU186   =  128
  10. CONST WF_CPU286   =    2
  11. CONST WF_CPU386   =    4
  12. CONST WF_CPU486   =    8
  13. CONST WF_STANDARD =   16
  14. CONST WF_ENHANCED =   32
  15.  
  16. CONST MB_OK          = 0
  17. CONST MB_ICONHAND    = 16
  18. CONST MB_TASKMODAL   = 8192
  19.  
  20. DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
  21. DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  22. DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  23. DECLARE FUNCTION GetProfileString LIB "kernel" (szSect$, szKey$, szDefault$, szBuf$, cbBuf%) AS INTEGER
  24. DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
  25. DECLARE FUNCTION GetSystemMetrics LIB "user" (nIndex%) AS INTEGER
  26. DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
  27.  
  28. CONST cmoVital       = 1
  29. CONST cmoCopy        = 2
  30. CONST cmoUndo        = 4
  31. CONST cmoRoot        = 8
  32. CONST cmoDecompress  = 16
  33. CONST cmoTimeStamp   = 32
  34. CONST cmoReadOnly    = 64
  35. CONST cmoBackup      = 128
  36. CONST cmoForce       = 256
  37. CONST cmoRemove      = 512
  38. CONST cmoOverwrite   = 1024
  39. CONST cmoAppend      = 2048
  40. CONST cmoPrepend     = 4096
  41. CONST cmoNone        = 0
  42. CONST cmoAll         = 65535
  43.  
  44. CONST femExists     = 0
  45. CONST femRead       = 1
  46. CONST femWrite      = 2
  47. CONST femReadWrite  = 3
  48.  
  49. CONST ynrcNo         = 0
  50. CONST ynrcYes        = 1
  51. CONST ynrcErr1       = 2
  52. CONST ynrcErr2       = 3
  53. CONST ynrcErr3       = 4
  54. CONST ynrcErr4       = 5
  55. CONST ynrcErr5       = 6
  56. CONST ynrcErr6       = 7
  57. CONST ynrcErr7       = 8
  58. CONST ynrcErr8       = 9
  59. CONST ynrcErr9       = 10
  60.  
  61. CONST grcOkay       = 0
  62. CONST grcNotOkay    = 1
  63. CONST grcUserQuit   = 48
  64.  
  65. CONST cbSymValMax = 512
  66.  
  67. CONST STFERR      = 1024
  68. CONST STFQUIT     = 1025
  69.  
  70. CONST scmOff      = 0
  71. CONST scmOnIgnore = 1
  72. CONST scmOnFatal  = 2
  73.  
  74. DECLARE FUNCTION FParseFATPathIntoPieces LIB "mscomstf.dll" (szPath$, szVol$, cbVol%, szDir$, cbDir%, szFile$, cbFile%) AS INTEGER
  75. DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
  76. DECLARE FUNCTION FSetSilent LIB "mscomstf.dll" (mode%) AS INTEGER
  77. DECLARE FUNCTION FSetBeepingMode LIB "mscomstf.dll" (mode%) AS INTEGER
  78. DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
  79. DECLARE FUNCTION FRestoreCursor  LIB "msshlstf.dll" (hPrev%) AS INTEGER
  80. DECLARE FUNCTION FOpenLogFile    LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
  81. DECLARE FUNCTION FCloseLogFile   LIB "mscomstf.dll" AS INTEGER
  82. DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
  83. DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
  84. DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
  85.  
  86. DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
  87. DECLARE FUNCTION FSetAbout LIB "msshlstf.dll" (szAbout1$, szAbout2$) AS INTEGER
  88. DECLARE FUNCTION FDoDialog LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS INTEGER
  89. DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
  90. DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
  91. DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
  92. DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
  93. DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
  94. DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
  95. DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
  96. DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
  97. DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
  98. DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
  99.  
  100. DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
  101. DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
  102. DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
  103.  
  104. DECLARE SUB      ProSetPos LIB "msinsstf.dll" (x%, y%)
  105. DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  106. DECLARE FUNCTION FRemoveDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  107. DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
  108. DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  109. DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  110. DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
  111. DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
  112. DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  113. DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
  114. DECLARE FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  115. DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
  116. DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
  117. DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
  118. DECLARE FUNCTION FStampResource LIB "msinsstf.dll" (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) AS INTEGER
  119. DECLARE FUNCTION FDumpCopyListToFile LIB "msinsstf.dll" (szFile$) AS INTEGER
  120. DECLARE SUB      ResetCopyList LIB "msinsstf.dll"
  121. DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
  122. DECLARE FUNCTION FAddDos5Help LIB "msinsstf.dll" (szProgName$, szProgHelp$, cmo%) AS INTEGER
  123. DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
  124. DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
  125. DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
  126. DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
  127. DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
  128. DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
  129. DECLARE FUNCTION FIsFileWritable LIB "msinsstf.dll" (szFile$) AS INTEGER
  130. DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
  131. DECLARE FUNCTION FClearBillboardList LIB "msinsstf.dll" AS INTEGER
  132. DECLARE FUNCTION FSetRestartDir LIB "msinsstf.dll" (szDir$) AS INTEGER
  133. DECLARE FUNCTION FRestartListEmpty LIB "msinsstf.dll" AS INTEGER
  134. DECLARE FUNCTION FExitExecRestart LIB "msinsstf.dll" AS INTEGER
  135. DECLARE FUNCTION SetCopyMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  136. DECLARE FUNCTION GetCopyMode LIB "msinsstf.dll" AS INTEGER
  137. DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  138. DECLARE FUNCTION GetDecompMode LIB "msinsstf.dll" AS INTEGER
  139. DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
  140. DECLARE FUNCTION FPrependToPath LIB "msinsstf.dll" (szSrc$, szDst$, szDir$, cmo%) AS INTEGER
  141.  
  142. DECLARE FUNCTION SetTimeValue LIB "msinsstf.dll" (usHours%, usMinutes%, usSeconds%) AS INTEGER
  143.  
  144. DECLARE SUB SetBitmap(szDll$, Bitmap%)
  145. DECLARE SUB SetAbout(szAbout1$, szAbout2$)
  146. DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
  147. DECLARE SUB UIPop (n%)
  148. DECLARE SUB UIPopAll
  149. DECLARE SUB SetTitle (sz$)
  150. DECLARE SUB ReadInfFile (szFile$)
  151. DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
  152. DECLARE SUB RemoveSymbol (szSym$)
  153. DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
  154. DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
  155. DECLARE SUB MakeListFromSectionKeys (szSymbol$, szSect$)
  156. DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
  157. DECLARE SUB AddListItem(szSymbol$, szItem$)
  158. DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
  159.  
  160. DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
  161. DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
  162.  
  163. DECLARE FUNCTION ShowWaitCursor AS INTEGER
  164. DECLARE SUB RestoreCursor (hPrev%)
  165.  
  166. DECLARE FUNCTION SetBeepingMode (mode%) AS INTEGER
  167. DECLARE FUNCTION SetSilentMode (mode%) AS INTEGER
  168.  
  169. DECLARE FUNCTION GetSectionKeyDate (szSect$, szKey$) AS STRING
  170. DECLARE FUNCTION GetSectionKeyFilename (szSect$, szKey$) AS STRING
  171. DECLARE FUNCTION GetSectionKeySize (szSect$, szKey$) AS LONG
  172. DECLARE FUNCTION GetSectionKeyVersion (szSect$, szKey$) AS STRING
  173.  
  174. DECLARE SUB MakeListFromSectionDate (szSym$, szSect$)
  175. DECLARE SUB MakeListFromSectionFilename (szSym$, szSect$)
  176. DECLARE SUB MakeListFromSectionSize (szSym$, szSect$)
  177. DECLARE SUB MakeListFromSectionVersion (szSym$, szSect$)
  178.  
  179. DECLARE SUB CreateDir (szDir$, cmo%)
  180. DECLARE SUB RemoveDir (szDir$, cmo%)
  181. DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
  182. DECLARE SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  183. DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  184. DECLARE SUB CopyFilesInCopyList
  185. DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
  186. DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  187. DECLARE SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
  188. DECLARE SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  189. DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
  190. DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
  191. DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
  192. DECLARE SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%)
  193. DECLARE SUB DumpCopyList (szFile$)
  194. DECLARE SUB ClearCopyList
  195. DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
  196. DECLARE SUB AddDos5Help (szProgName$, szProgHelp$, cmo%)
  197. DECLARE SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
  198. DECLARE SUB RemoveFile (szFullPathSrc$, cmo%)
  199. DECLARE SUB BackupFile (szFullPath$, szBackup$)
  200. DECLARE SUB RenameFile (szFullPath$, szBackup$)
  201. DECLARE SUB InitInstall
  202. DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
  203. DECLARE SUB AddBlankToBillboardList (lTicks&)
  204. DECLARE SUB ClearBillboardList
  205. DECLARE SUB OpenLogFile (szFile$, fAppend%)
  206. DECLARE SUB CloseLogFile
  207. DECLARE SUB WriteToLogFile (szStr$)
  208. DECLARE SUB SetCopyGaugePosition (x%, y%)
  209. DECLARE SUB SetRestartDir(szDir$)
  210. DECLARE FUNCTION RestartListEmpty AS INTEGER
  211. DECLARE FUNCTION ExitExecRestart AS INTEGER
  212. DECLARE FUNCTION FindFileUsingFileOpen (szFile$) AS STRING
  213. DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
  214. DECLARE FUNCTION IsFileWritable (szFile$) AS INTEGER
  215. DECLARE FUNCTION GetNthFieldFromIniString (szLine$, iField%) AS STRING
  216. DECLARE SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%)
  217.  
  218. DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
  219. DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
  220. DECLARE FUNCTION GetWindowsMode AS INTEGER
  221. DECLARE FUNCTION GetWindowsDir  AS STRING
  222. DECLARE FUNCTION GetWindowsSysDir AS STRING
  223. DECLARE FUNCTION IsWindowsShared AS INTEGER
  224. DECLARE FUNCTION GetScreenWidth AS INTEGER
  225. DECLARE FUNCTION GetScreenHeight AS INTEGER
  226.  
  227. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  228.     fFrameInit = 0
  229.     fInstallInit = 0
  230.  
  231.     IF hSetup > 0 THEN
  232.     END IF
  233.  
  234.     i% = InitFrame(szCmdLine$)
  235.     fFrameInit = 1
  236.  
  237.     InitInstall
  238.     fInstallInit = 1
  239.  
  240.     InitSetup = i%
  241. END FUNCTION
  242.  
  243. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  244.     IF hSetup > 0 THEN
  245.     ELSE
  246.         i% = InitializeFrame(szCmdLine$)
  247.         IF i% = -1 THEN
  248.             END
  249.         ELSEIF i% = 0 THEN
  250.             END
  251.         ELSE
  252.             InitFrame = i%
  253.         END IF
  254.     END IF
  255. END FUNCTION
  256.  
  257. SUB SetBitmap(szDll$, Bitmap%) STATIC
  258.     IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
  259.         ERROR STFERR
  260.     END IF
  261. END SUB
  262.  
  263. SUB SetAbout(szAbout1$, szAbout2$) STATIC
  264.     IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
  265.         ERROR STFERR
  266.     END IF
  267. END SUB
  268.  
  269. SUB SetTitle(sz$) STATIC
  270.     SetWindowText HwndFrame(), sz$
  271. END SUB
  272.  
  273. SUB ReadInfFile (szFile$) STATIC
  274.     IF FOpenInf(szFile$, 1, 0) = 0 THEN
  275.         ERROR STFERR
  276.     END IF
  277. END SUB
  278.  
  279. FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
  280.     IF FDoDialog(HwndFrame(), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
  281.         ERROR STFERR
  282.     ELSE
  283.         UIStartDlg = GetSymbolValue("DLGEVENT")
  284.     END IF
  285. END FUNCTION
  286.  
  287. SUB UIPop (n%) STATIC
  288.     IF FKillNDialogs(n%) = 0 THEN
  289.         ERROR STFERR
  290.     END IF
  291. END SUB
  292.  
  293. SUB UIPopAll STATIC
  294.     IF FKillNDialogs(65535) = 0 THEN
  295.         ERROR STFERR
  296.     END IF
  297. END SUB
  298.  
  299. FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
  300.     szValue$ = string$(cbSymValMax,32)
  301.     Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
  302.     GetSymbolValue = szValue$
  303.     IF Length% >= cbSymValMax THEN
  304.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  305.         ERROR STFERR
  306.     END IF
  307.     IF szSymbol$ = "" THEN
  308.         ERROR STFERR
  309.     END IF
  310.     szValue$ = ""
  311. END FUNCTION
  312.  
  313. FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
  314.     GetListLength = UsGetListLength(szSymbol$)
  315.     IF szSymbol$ = "" THEN
  316.         ERROR STFERR
  317.     END IF
  318. END FUNCTION
  319.  
  320. FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
  321.     szListItem$ = string$(cbSymValMax,32)
  322.     Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
  323.     GetListItem = szListItem$
  324.     IF Length% >= cbSymValMax THEN
  325.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  326.         ERROR STFERR
  327.     END IF
  328.     IF szListSymbol$ = "" THEN
  329.         ERROR STFERR
  330.     END IF
  331.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  332.         ERROR STFERR
  333.     end if
  334.     szListItem$ = ""
  335. END FUNCTION
  336.  
  337. SUB AddListItem(szSymbol$, szItem$) STATIC
  338.     IF FAddListItem(szSymbol$, szItem$) = 0 THEN
  339.         ERROR STFERR
  340.     END IF
  341. END SUB
  342.  
  343. SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
  344.     IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
  345.         ERROR STFERR
  346.     END IF
  347. END SUB
  348.  
  349. SUB MakeListFromSectionKeys(szSymbol$, szSect$) STATIC
  350.     IF FSetSymbolToListOfInfKeys(szSymbol$, szSect$, 1) = 0 THEN
  351.         ERROR STFERR
  352.     END IF
  353. END SUB
  354.  
  355. SUB SetSymbolValue(szSymbol$, szValue$) STATIC
  356.     IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
  357.         ERROR STFERR
  358.     END IF
  359. END SUB
  360.  
  361. SUB RemoveSymbol(szSym$) STATIC
  362.     IF FRemoveSymbol(szSym$) = 0 THEN
  363.         ERROR STFERR
  364.     END IF
  365. END SUB
  366.  
  367. FUNCTION ShowWaitCursor STATIC AS INTEGER
  368.     ShowWaitCursor = HShowWaitCursor
  369. END FUNCTION
  370.  
  371. SUB RestoreCursor (hPrev%) STATIC
  372.     i% = FRestoreCursor(hPrev%)
  373.     IF i% = 0 THEN
  374.         ERROR STFERR
  375.     END IF
  376. END SUB
  377.  
  378. FUNCTION SetBeepingMode (mode%) STATIC AS INTEGER
  379.     SetBeepingMode = FSetBeepingMode(mode%)
  380. END FUNCTION
  381.  
  382. FUNCTION SetSilentMode (mode%) STATIC AS INTEGER
  383.     SetSilentMode = FSetSilent(mode%)
  384. END FUNCTION
  385.  
  386. FUNCTION GetSectionKeyDate (szSect$, szKey$) STATIC AS STRING
  387.     szBuf$ = string$(128, 32)
  388.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 5, szBuf$, 128)
  389.     IF Length% >= 128 THEN
  390.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  391.         ERROR STFERR
  392.     END IF
  393.  
  394.     IF Length% = -1 THEN
  395.         ERROR STFERR
  396.     END IF
  397.  
  398.     GetSectionKeyDate = szBuf$
  399.     szBuf$ = ""
  400. END FUNCTION
  401.  
  402. FUNCTION GetSectionKeyFilename (szSect$, szKey$) STATIC AS STRING
  403.     szBuf$ = string$(128, 32)
  404.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 1, szBuf$, 128)
  405.     IF Length% >= 128 THEN
  406.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  407.         ERROR STFERR
  408.     END IF
  409.  
  410.     IF Length% = -1 THEN
  411.         ERROR STFERR
  412.     END IF
  413.  
  414.     GetSectionKeyFilename = szBuf$
  415.     szBuf$ = ""
  416. END FUNCTION
  417.  
  418. FUNCTION GetSectionKeySize (szSect$, szKey$) STATIC AS LONG
  419.     szBuf$ = string$(128, 32)
  420.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 15, szBuf$, 128)
  421.     IF Length% >= 128 THEN
  422.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  423.         ERROR STFERR
  424.     END IF
  425.  
  426.     IF Length% = -1 THEN
  427.         ERROR STFERR
  428.     END IF
  429.  
  430.     GetSectionKeySize = VAL(szBuf$)
  431.     szBuf$ = ""
  432. END FUNCTION
  433.  
  434. FUNCTION GetSectionKeyVersion (szSect$, szKey$) STATIC AS STRING
  435.     szBuf$ = string$(128, 32)
  436.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 19, szBuf$, 128)
  437.     IF Length% >= 128 THEN
  438.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  439.         ERROR STFERR
  440.     END IF
  441.  
  442.     IF Length% = -1 THEN
  443.         ERROR STFERR
  444.     END IF
  445.  
  446.     GetSectionKeyVersion = szBuf$
  447.     szBuf$ = ""
  448. END FUNCTION
  449.  
  450. SUB MakeListFromSectionDate (szSym$, szSect$) STATIC
  451.     IF FMakeListInfSectionField(szSym$, szSect$, 5) = 0 THEN
  452.         ERROR STFERR
  453.     END IF
  454. END SUB
  455.  
  456. SUB MakeListFromSectionFilename (szSym$, szSect$) STATIC
  457.     IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
  458.         ERROR STFERR
  459.     END IF
  460. END SUB
  461.  
  462. SUB MakeListFromSectionSize (szSym$, szSect$) STATIC
  463.     IF FMakeListInfSectionField(szSym$, szSect$, 15) = 0 THEN
  464.         ERROR STFERR
  465.     END IF
  466. END SUB
  467.  
  468. SUB MakeListFromSectionVersion (szSym$, szSect$) STATIC
  469.     IF FMakeListInfSectionField(szSym$, szSect$, 19) = 0 THEN
  470.         ERROR STFERR
  471.     END IF
  472. END SUB
  473.  
  474. SUB InitInstall STATIC
  475.     IF hSetup > 0 THEN
  476.     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
  477.         END
  478.     END IF
  479. END SUB
  480.  
  481. SUB CreateDir (szDir$, cmo%) STATIC
  482.     IF FCreateDir(szDir$, cmo%) = 0 THEN
  483.         ERROR STFERR
  484.     END IF
  485. END SUB
  486.  
  487. SUB RemoveDir (szDir$, cmo%) STATIC
  488.     IF FRemoveDir(szDir$, cmo%) = 0 THEN
  489.         ERROR STFERR
  490.     END IF
  491. END SUB
  492.  
  493. SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
  494.     IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
  495.         ERROR STFERR
  496.     END IF
  497. END SUB
  498.  
  499. SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  500.     IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  501.         ERROR STFERR
  502.     END IF
  503. END SUB
  504.  
  505. SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
  506.     IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
  507.         ERROR STFERR
  508.     END IF
  509. END SUB
  510.  
  511. SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  512.     IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  513.         ERROR STFERR
  514.     END IF
  515. END SUB
  516.  
  517. SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
  518.     IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
  519.         ERROR STFERR
  520.     END IF
  521. END SUB
  522.  
  523. SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
  524.     IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
  525.         ERROR STFERR
  526.     END IF
  527. END SUB
  528.  
  529. SUB ClearCopyList STATIC
  530.     ResetCopyList
  531. END SUB
  532.  
  533. FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
  534.     lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
  535.     IF lNeed& < 0 THEN
  536.         ERROR STFERR
  537.     END IF
  538.     GetCopyListCost = lNeed&
  539. END FUNCTION
  540.  
  541. SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
  542.     szItemNew$ = szItem$
  543.     IF szOther$ <> "" THEN
  544.         szItemNew$ = szItem$ + "," + szOther$
  545.     END IF
  546.     IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  547.         ERROR STFERR
  548.     END IF
  549.     szItemNew$ = ""
  550. END SUB
  551.  
  552. SUB CopyFilesInCopyList STATIC
  553.     grc% = GrcCopyFilesInCopyList (HinstFrame())
  554.  
  555.     IF grc% = grcUserQuit THEN
  556.         ERROR STFQUIT
  557.     ELSEIF grc% > 0 THEN
  558.         ERROR STFERR
  559.     END IF
  560. END SUB
  561.  
  562. SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
  563.     IF  FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
  564.         ERROR STFERR
  565.     END IF
  566. END SUB
  567.  
  568. SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
  569.     IF  YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN
  570.         ERROR STFERR
  571.     END IF
  572. END SUB
  573.  
  574. SUB BackupFile (szFullPath$, szBackup$) STATIC
  575.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  576.         ERROR STFERR
  577.     END IF
  578. END SUB
  579.  
  580. SUB RenameFile (szFullPath$, szBackup$) STATIC
  581.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  582.         ERROR STFERR
  583.     END IF
  584. END SUB
  585.  
  586. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  587.     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  588.         ERROR STFERR
  589.     END IF
  590. END SUB
  591.  
  592. SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  593.     IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  594.         ERROR STFERR
  595.     END IF
  596. END SUB
  597.  
  598. SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  599.     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  600.         ERROR STFERR
  601.     END IF
  602. END SUB
  603.  
  604. SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
  605.     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  606.         ERROR STFERR
  607.     END IF
  608. END SUB
  609.  
  610. SUB AddBlankToBillboardList (lTicks&) STATIC
  611.     IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
  612.         ERROR STFERR
  613.     END IF
  614. END SUB
  615.  
  616. SUB ClearBillboardList STATIC
  617.     IF FClearBillboardList = 0 THEN
  618.         ERROR STFERR
  619.     END IF
  620. END SUB
  621.  
  622. SUB OpenLogFile (szFile$, fAppend%) STATIC
  623.     IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
  624.         ERROR STFERR
  625.     END IF
  626. END SUB
  627.  
  628. SUB CloseLogFile STATIC
  629.     IF FCloseLogFile() = 0 THEN
  630.         ERROR STFERR
  631.     END IF
  632. END SUB
  633.  
  634. SUB WriteToLogFile (szStr$) STATIC
  635.     IF FWriteToLogFile(szStr$, 1) = 0 THEN
  636.         ERROR STFERR
  637.     END IF
  638. END SUB
  639.  
  640. SUB SetCopyGaugePosition (x%, y%) STATIC
  641.     ProSetPos x%, y%
  642. END SUB
  643.  
  644. FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
  645.     szBuf$ = STRING$(512, 32)
  646.  
  647.     wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
  648.     IF wRet% = 0 THEN
  649.         FindFileUsingFileOpen = szBuf$
  650.     ELSEIF wRet% = 1 THEN
  651.         FindFileUsingFileOpen = ""
  652.     ELSE
  653.         ERROR STFERR
  654.     END IF
  655.  
  656.     szBuf$ = ""
  657. END FUNCTION
  658.  
  659. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  660.     IsDirWritable = FIsDirWritable(szDir$)
  661. END FUNCTION
  662.  
  663. FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
  664.     IsFileWritable = FIsFileWritable(szFile$)
  665. END FUNCTION
  666.  
  667. FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
  668.     IF iField% < 1 THEN
  669.         ERROR STFERR
  670.     END IF
  671.     szStart$ = szLine$
  672.     IF iField% <> 1 THEN
  673.         FOR i% = 2 TO iField% STEP 1
  674.             iNew% = INSTR(szStart$, ",")
  675.             IF iNew% = 0 THEN
  676.                 GetNthFieldFromIniString = ""
  677.                 GOTO _GNFFIS_END
  678.             END IF
  679.             szStart$ = MID$(szStart$, (iNew% + 1))
  680.         NEXT
  681.     END IF
  682.  
  683.     iNew% = INSTR(szStart$, ",")
  684.     IF iNew% <> 0 THEN
  685.         szStart$ = MID$(szStart$, 1, (iNew% - 1))
  686.     END IF
  687.  
  688.     GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
  689.  
  690. _GNFFIS_END:
  691.  
  692. END FUNCTION
  693.  
  694. FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
  695.     GetWindowsMajorVersion = GetVersion() MOD 256
  696. END FUNCTION
  697.  
  698. FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
  699.     GetWindowsMinorVersion = GetVersion() / 256
  700. END FUNCTION
  701.  
  702. FUNCTION GetWindowsMode STATIC AS INTEGER
  703.     GetWindowsMode = 0
  704.     longTmp& = GetWinFlags()
  705.     IF longTmp& AND WF_STANDARD THEN
  706.         GetWindowsMode = 1
  707.     ELSEIF longTmp& AND WF_ENHANCED THEN
  708.         GetWindowsMode = 2
  709.     END IF
  710. END FUNCTION
  711.  
  712. FUNCTION GetWindowsDir STATIC AS STRING
  713.     szBuf$ = string$(256, 32)
  714.     cbBuf% = GetWindowsDirectory(szBuf$, 256)
  715.  
  716.     IF cbBuf% = 0 THEN
  717.         GetWindowsDir = ""
  718.         ERROR STFERR
  719.     ELSE
  720.         IF cbBuf% > 255 THEN
  721.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  722.             ERROR STFERR
  723.         END IF
  724.         szBuf$ = RTRIM$(szBuf$)
  725.         IF MID$(szBuf$, 1, 1) = "\" THEN
  726.             'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  727.             szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  728.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  729.             szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  730.         END IF
  731.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  732.             szBuf$ = szBuf$ + "\"
  733.         END IF
  734.         GetWindowsDir = szBuf$
  735.     END IF
  736.  
  737.     szBuf$ = ""
  738. END FUNCTION
  739.  
  740. FUNCTION GetWindowsSysDir STATIC AS STRING
  741.     szBuf$ = string$(256, 32)
  742.     cbBuf% = GetSystemDirectory(szBuf$, 256)
  743.  
  744.     IF cbBuf% = 0 THEN
  745.         ERROR STFERR
  746.     ELSE
  747.         IF cbBuf% > 255 THEN
  748.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  749.             ERROR STFERR
  750.         END IF
  751.         szBuf$ = RTRIM$(szBuf$)
  752.         IF MID$(szBuf$, 1, 1) = "\" THEN
  753.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  754.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  755.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  756.         END IF
  757.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  758.             szBuf$ = szBuf$ + "\"
  759.         END IF
  760.         GetWindowsSysDir = szBuf$
  761.     END IF
  762.  
  763.     szBuf$ = ""
  764. END FUNCTION
  765.  
  766. FUNCTION IsWindowsShared STATIC AS INTEGER
  767.     szWin$ = UCASE$(GetWindowsDir())
  768.     szSys$ = UCASE$(GetWindowsSysDir())
  769.  
  770.     IF len(szWin$) = 0 THEN
  771.         ERROR STFERR
  772.     END IF
  773.  
  774.     IF len(szSys$) <= len(szWin$) THEN
  775.         IsWindowsShared = 1
  776.     ELSE
  777.         szSys$ = MID$(szSys$, 1, len(szWin$))
  778.         IF szWin$ = szSys$ THEN
  779.             IsWindowsShared = 0
  780.         ELSE
  781.             IsWindowsShared = 1
  782.         END IF
  783.     END IF
  784. END FUNCTION
  785.  
  786. FUNCTION GetScreenWidth STATIC AS INTEGER
  787.     GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
  788. END FUNCTION
  789.  
  790. FUNCTION GetScreenHeight STATIC AS INTEGER
  791.     GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
  792. END FUNCTION
  793.  
  794. SUB SetRestartDir (szDir$) STATIC
  795.     IF FSetRestartDir(szDir$) = 0 THEN
  796.         ERROR STFERR
  797.     END IF
  798. END SUB
  799.  
  800. FUNCTION RestartListEmpty STATIC AS INTEGER
  801.     IF FRestartListEmpty() = 0 THEN
  802.         RestartListEmpty = 0
  803.     ELSE
  804.         RestartListEmpty = 1
  805.     END IF
  806. END FUNCTION
  807.  
  808. FUNCTION ExitExecRestart STATIC AS INTEGER
  809.     ExitExecRestart = FExitExecRestart
  810. END FUNCTION
  811.  
  812. SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
  813.  
  814.     IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
  815.         ERROR STFERR
  816.     END IF
  817. END SUB
  818.  
  819. TRAP CleanupTrap From "MSSHLSTF.DLL"
  820.  
  821. End Trap
  822.  
  823. hSetup = InitSetup(COMMAND$)
  824.  
  825. ON ERROR GOTO QUIT
  826.